package cl.tinet.trainee.tarea6b.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * 
 * Usuario asd.
 *
 * @author Jose Ignacio
 */
@Entity
@Table(name = "Usuario")

public class Usuario implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = -2379445105051818665L;

    /**
     * Atributo username, clave primaria de la tabla en base de datos.
     */
    @Id
    @Column(name = "username")
    private String username;

    /**
     * 
     */
    @Column(name = "nombreusuario")
    private String nombre;

    /**
     * 
     */
    @Column(name = "apellidoPaterno")
    private String apellidoPaterno;

    /**
     * 
     */
    @Column(name = "apellidoMaterno")
    private String apellidoMaterno;

    /**
     * 
     */
    @Column(name = "password")
    private String password;

    /**
     * 
     */
    @Column(name = "activo")
    private Boolean activo;

    /**
     * Allows to get the username attribute value.
     * 
     * @return the username value.
     */
    public String getUsername() {
        return username;
    }

    /**
     * Allows to set the username attribute value.
     * 
     * @param username
     *            new value for username attribute.
     */
    public void setUsername(String username) {
        this.username = username;
    }

    /**
     * Allows to get the nombre attribute value.
     * 
     * @return the nombre value.
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * Allows to set the nombre attribute value.
     * 
     * @param nombre
     *            new value for nombre attribute.
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * Allows to get the apellidoPaterno attribute value.
     * 
     * @return the apellidoPaterno value.
     */
    public String getApellidoPaterno() {
        return apellidoPaterno;
    }

    /**
     * Allows to set the apellidoPaterno attribute value.
     * 
     * @param apellidoPaterno
     *            new value for apellidoPaterno attribute.
     */
    public void setApellidoPaterno(String apellidoPaterno) {
        this.apellidoPaterno = apellidoPaterno;
    }

    /**
     * Allows to get the apellidoMaterno attribute value.
     * 
     * @return the apellidoMaterno value.
     */
    public String getApellidoMaterno() {
        return apellidoMaterno;
    }

    /**
     * Allows to set the apellidoMaterno attribute value.
     * 
     * @param apellidoMaterno
     *            new value for apellidoMaterno attribute.
     */
    public void setApellidoMaterno(String apellidoMaterno) {
        this.apellidoMaterno = apellidoMaterno;
    }

    /**
     * Allows to get the password attribute value.
     * 
     * @return the password value.
     */
    public String getPassword() {
        return password;
    }

    /**
     * Allows to set the password attribute value.
     * 
     * @param password
     *            new value for password attribute.
     */
    public void setPassword(String password) {
        this.password = password;
    }

    /**
     * Allows to get the activo attribute value.
     * 
     * @return the activo value.
     */
    public Boolean getActivo() {
        return activo;
    }

    /**
     * Allows to set the activo attribute value.
     * 
     * @param activo
     *            new value for activo attribute.
     */
    public void setActivo(Boolean activo) {
        this.activo = activo;
    }


    /**
     * {@inheritDoc}
     */
    public boolean equals(Object o) {
        if (o == null) {
            return false;
        } else if (!(o instanceof Usuario)) {
            return false;
        } else if (this.getUsername().equals(((Usuario) o).getUsername())) {
            return true;
        }
        return false;
    }

}
